/*
 * GetVerseスクリプト - www.watchtower.orgの新世界訳聖書の節を検索する
 */

import scala.io._

// 聖句取得関数
def getVerse(bookName: String, chapter: Int, verse: Int, language: String): Option[String] = {

  // watchtower.orgの新世界訳聖書へのURL
  val url = "http://www.watchtower.org/%s/bible/%s/chapter_%03d.htm".format(
    language, bookName.toLowerCase, chapter)

  // 章のHTMLを取得
  val html =
    try {
      Source.fromURL(url, "UTF-8").getLines.mkString // これが"html"に代入される
    } catch {
      case _ => ""
    }

  // 節を正規表現で検索
  val r = """<span id="vs%d">((?:[^<]|<(\w)+ .*?</\2>)*?)</span>""".format(verse).r
  r.findFirstMatchIn(html) match {
    case Some(m) =>  Some(m.group(1))
    case None => None
  }
}

// Main
if (args.size < 3) {
  println("usage: scala getverse.scala BOOK CHAPTER VERSE [LANGUAGE]")
  exit(1)
}
val it = args.elements                          // コマンド引数配列のイテレータを取得
val bookName, chapter, verse = it.next          // 一気に代入
val language = if (it.hasNext) it.next else "j" // 日本語がデフォルト

getVerse(bookName, chapter.toInt, verse.toInt, language) match {
  case Some(m) => println(m)
  case None => println("not found...");
}
